package org.dru.clay.respository;

import java.io.File;
import java.net.URI;

import org.dru.clay.respository.artifact.Artifact;
import org.dru.clay.respository.artifact.Group;
import org.dru.clay.respository.artifact.Module;
import org.dru.clay.respository.artifact.UnresolvedArtifact;
import org.dru.clay.respository.transport.Transport;

public interface Repository {
	
	URI getLocation();
	
	Artifact lookup(Transport transport, Group group, UnresolvedArtifact artifact);

	ResolveResult resolve(Transport transport, Module module);

	void get(Transport transport, Module module, Artifact artifact, File destination);

	void put(Transport transport, Module module, Artifact artifact, File source);
}
